package net.siufung.market.base.uuid.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.ToString;
import net.siufung.core.model.EnumsVo;
import net.siufung.core.model.IEnum;

import java.util.List;
import java.util.stream.Collectors;

/**
 * @author 陈建峰
 * @date 2023/10/10 7:10 AM
 * @since V1.0.0
 */
@ToString
@AllArgsConstructor
public enum UuidPartType implements IEnum<String> {

    /**
     * 日期格式
     */
    DATE("0", "日期格式"),
    /**
     * 固定值
     */
    FIXED_VALUE("1", "固定值"),
    /**
     * 流水号
     */
    SERIAL_NUMBER("2", "流水号"),
    /**
     * 分隔符
     */
    SEPARATOR("3", "分隔符"),
    /**
     * 数据字典
     */
    DICT("4", "数据字典");

    @Getter
    private final String value;

    @Getter
    private final String text;


    public static UuidPartType get(String value) {
        return IEnum.get(UuidPartType.class,
                enums -> enums.getValue().equals(value));
    }

    public static String getDesc(String value) {
        return IEnum.getDesc(UuidPartType.class,
                enums -> enums.getValue().equals(value));
    }

    public static List<EnumsVo> getList(){
        return IEnum.findList(UuidPartType.class).stream()
                .map(element -> new EnumsVo(element.getValue(), element.getDesc(), element.getText()))
                .collect(Collectors.toList());
    }

}
